home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / G-Games / (c)gc.d64 / ratrun.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  7KB  |  273 lines

  1. 10 REM ********************************
  2. 11 REM *  MODIFIED SLIGHTLY AT 2110H  *
  3. 12 REM *  ON APRIL THE 18TH, 1985 BY  *
  4. 13 REM *         DAVID BRADLEY        *
  5. 14 REM ********************************
  6. 15 POKE53280,11:POKE53281,12:PRINT"[144]";
  7. 100 POKE53272,21
  8. 110 PRINT"[147]";TAB(15);"RATRUN"
  9. 120 FORI=1TO10:PRINT"[192][192][192][192]";:NEXT
  10. 130 PRINT"FIND YOUR WAY THROUGH A PERSPECTIVE MAZE
  11. 140 [153]"YOUR CONTROLS FOR JOYSTICK TWOWAIT ARE:
  12. 150 PRINT"  UP      MOVE FORWARD
  13. 160 [153]"  LEFT    TURN LEFT
  14. 170 PRINT"  RIGHT   TURN RIGHT
  15. 180 [153]"  DOWN    TURN AROUND
  16. 190 PRINT"  BUTTON  HELP!
  17. 200 [153]"PRESS BUTTONWAIT TO BEGIN
  18. 210 I=((PEEK(56320)AND16)=0):IFI=0THEN210
  19. 220 PRINT"[147]":CR$=CHR$(13):QK=198
  20. 225 ML=(PEEK(45)+256*PEEK(46)-512)
  21. 230 H=12:V=7:H1=H+1:W=ML:V1=ML+256
  22. 240 DIMXL(4),N2(4),YL(4),XR(4)
  23. 250 FORI=0TO4:READXL(I),N2(I),YL(I),XR(I):NEXTI
  24. 260 DATA8,20,-4,31,8,12,1,27,12,6,5,24,15,2,8,22,17,0,10,21
  25. 270 CX=INT(RND(1)*H)+1:CY=INT(RND(1)*V)+1
  26. 280 C=CX:R=CY:S=0
  27. 290 FORI=0TO(V+1)*H1:POKEW+I,0:POKEV1+I,0:NEXT
  28. 300 PRINT"[147]SETTING UP MAZE...";
  29. 310 DA=0:N=0:AV=V1+C+R*H1:AW=W+C+R*H1:POKEAW,1:S=S+1:IFS>=H*VTHEN570
  30. 320 PRINTMID$("[146]",(SAND1)+1,1);"[214][157]";
  31. 330 IFC>1ANDPEEK(AW-1)=0THENDA=DA+2:N=N+1
  32. 340 IFC<HANDPEEK(AW+1)=0THENDA=DA+1:N=N+1
  33. 350 IFR>1ANDPEEK(AW-H1)=0THENDA=DA+8:N=N+1
  34. 360 IF(R<VANDPEEK(AW+H1)=0)THENDA=DA+4:N=N+1
  35. 370 N=INT(RND(1)*N)+1
  36. 380 ONDA+1GOTO390,560,550,420,540,430,440,450,530,460,470,480,490,500,510,520
  37. 390 S=S-1
  38. 400 C=C+1:IFC>HTHENC=1:R=R+1:IFR>VTHENR=1
  39. 410 ONPEEK(W+C+R*H1)+1GOTO400,310
  40. 420 ONNGOTO550,560
  41. 430 ONNGOTO540,560
  42. 440 ONNGOTO540,550
  43. 450 ONNGOTO540,550,560
  44. 460 ONNGOTO530,560
  45. 470 ONNGOTO530,550
  46. 480 ONNGOTO530,550,560
  47. 490 ONNGOTO530,540
  48. 500 ONNGOTO530,540,560
  49. 510 ONNGOTO530,540,550
  50. 520 ONNGOTO530,540,550,560
  51. 530 R=R-1:AV=AV-H1:POKEAV,PEEK(AV)OR1:GOTO310
  52. 540 POKEAV,PEEK(AV)OR1:R=R+1:AV=AV+H1:GOTO310
  53. 550 C=C-1:AV=AV-1:POKEAV,PEEK(AV)OR2:GOTO310
  54. 560 POKEAV,PEEK(AV)OR2:C=C+1:AV=AV+1:GOTO310
  55. 570 I=RND(1)>.5:J=RND(1):K=RND(1)>.5
  56. 580 IFITHENX=INT(J*H)+1:Y=V+(V-1)*K
  57. 590 IFI=0THENY=INT(J*V)+1:X=H+(H-1)*K
  58. 600 IF(CX-X)^2+(CY-Y)^2<(H^2+V^2)/9THEN570
  59. 610 SX=X:SY=Y
  60. 620 PRINT"[147]
  61. 630 [129]I[178]W[164]W[170](V[170]1)[172]H1:[151]I,0:[130]
  62. 640 D[178][181]([187](1)[172]4)
  63. 650 T4[178]TI:[151](W[170]X[170]Y[172]H1),1
  64. 660 [139]F[178]0[167][141]1020:[153]"";[181]([186]((X[171]CX)[174]2[170](Y[171]CY)[174]2)[172]10[170].5)[173]10
  65. 670 [139]CX[178]X[175]CY[178]Y[167]2640
  66. 680 I[178][194](56320)[175]15
  67. 690 [139](([194](56320)[175]16)[178]0)[167]K[178]TI:[137]2660
  68. 700 [139]I[178]15[167]680
  69. 710 [139]I[178]13[167]D[178]D[170]2
  70. 720 [139]I[178]11[167]D[178]D[171]1
  71. 730 [139]I[178]7[167]D[178]D[170]1
  72. 740 [139]D[179]0[167]D[178]D[170]4
  73. 750 [139]D[177]3[167]D[178]D[171]4
  74. 760 [139]I[179][177]14[167]660
  75. 770 AV[178]V1[170]X[170]Y[172]H1:AW[178]W[170]X[170]Y[172]H1
  76. 780 [145]D[137]810,830,850
  77. 790 [139]Y[177]1[175]([194](AV[171]H1)[175]1)[167]Y[178]Y[171]1:[151]AW[171]H1,1:[137]660
  78. 800 [137]860
  79. 810 [139]X[179]H[175]([194](AV)[175]2)[167]X[178]X[170]1:[151]AW[170]1,1:[137]660
  80. 820 [137]860
  81. 830 [139]Y[179]V[175]([194](AV)[175]1)[167]Y[178]Y[170]1:[151]AW[170]H1,1:[137]660
  82. 840 [137]860
  83. 850 [139]X[177]1[175]([194](AV[171]1)[175]2)[167]X[178]X[171]1:[151]AW[171]1,1:[137]660
  84. 860 DN[178]23:[141]2720
  85. 870 [153][163]16);"ANDANDANDANDANDANDANDCMDCMDCMDCMDCMDCMDCMDNO DOORON":[129]I[178]1[164]1000:[130]
  86. 880 [153][163]16);"ON       CMDCMDCMDCMDCMDCMDCMD       ON":[137]670
  87. 890 [153]"LOAD ";
  88. 900 [129]I[178]1[164]H:[153]"ANDANDAND";:[130]:[153]""
  89. 910 [129]J[178]1[164]V:[153]"THENONCMDTHENONCMDTHEN";:[129]I[178]1[164]H
  90. 920 K[178][194](V1[170]I[170]J[172]H1)
  91. 930 [153][202]("ANDANDSQR  THENANDANDAND   ",1[170]3[172]K,3);
  92. 940 [139]K[179]2[167][153]"ONCMDTHENONCMDTHEN";
  93. 950 [153]"ONCMD";
  94. 960 [139][194](W[170]I[170]J[172]H1)[178]1[167][153]"CMD.";
  95. 970 [139]I[178]SX[175]J[178]SY[167][153]"CMD WAIT";
  96. 980 [139]I[178]CX[175]J[178]CY[167][153]"CMDSPC(";
  97. 990 [139]I[178]X[175]J[178]Y[167][153]"CMD";[202]("^>V<",D[170]1,1);
  98. 1000 [153]"";
  99. 1010 [130]:[153]"":[130]:[142]
  100. 1020 S[178]0:[153]"LOAD
  101. 1030 AV=V1+X+Y*H1
  102. 1040 ONDGOTO1190,1330,1470
  103. 1050 IFSY=Y-SANDSX=XTHENGOSUB2570
  104. 1060 IFCY=Y-SANDCX=XTHENGOSUB2510
  105. 1070 K=PEEK(AV-(S+1)*H1):IFK=0ORK=2GOTO1140
  106. 1080 IFPEEK(AV-S*H1)AND2THENGOSUB1620:GOTO1100
  107. 1090 GOSUB1740
  108. 1100 IFPEEK(AV-1-S*H1)AND2THENGOSUB2090:GOTO1120
  109. 1110 GOSUB2210
  110. 1120 S=S+1:IFS>4GOTO1610
  111. 1130 GOTO1050
  112. 1140 IFPEEK(AV-S*H1)AND2THENGOSUB1820:GOTO1160
  113. 1150 GOSUB2290
  114. 1160 IFPEEK(AV-1-S*H1)AND2THENGOSUB1960:GOTO1180
  115. 1170 GOSUB2390
  116. 1180 RETURN
  117. 1190 IFCY=YANDCX=X+STHENGOSUB2510
  118. 1200 IFSY=YANDSX=X+STHENGOSUB2570
  119. 1210 K=PEEK(AV+S):IFK=0ORK=1GOTO1280
  120. 1220 IFPEEK(AV+S)=2THENGOSUB1740:GOTO1240
  121. 1230 GOSUB1620
  122. 1240 IFPEEK(AV+S-H1)AND1THENGOSUB2090:GOTO1260
  123. 1250 GOSUB2210
  124. 1260 S=S+1:IFS>4GOTO1610
  125. 1270 GOTO1190
  126. 1280 IFPEEK(AV+S)=0THENGOSUB2290:GOTO1300
  127. 1290 GOSUB1820
  128. 1300 IFPEEK(AV+S-H1)AND1THENGOSUB1960:GOTO1320
  129. 1310 GOSUB2390
  130. 1320 RETURN
  131. 1330 IFCY=Y+SANDCX=XTHENGOSUB2510
  132. 1340 IFSY=Y+SANDSX=XTHENGOSUB2570
  133. 1350 K=PEEK(AV+S*H1):IFK=0ORK=2THENGOTO1420
  134. 1360 IFPEEK(AV-1+S*H1)AND2THENGOSUB1620:GOTO1380
  135. 1370 GOSUB1740
  136. 1380 IFPEEK(AV+S*H1)=1THENGOSUB2210:GOTO1400
  137. 1390 GOSUB2090
  138. 1400 S=S+1:IFS>4GOTO1610
  139. 1410 GOTO1330
  140. 1420 IFPEEK(AV-1+S*H1)AND2THENGOSUB1820:GOTO1440
  141. 1430 GOSUB2290
  142. 1440 IFPEEK(AV+S*H1)=0THENGOSUB2390:GOTO1460
  143. 1450 GOSUB1960
  144. 1460 RETURN
  145. 1470 IFCX=X-SANDCY=YTHENGOSUB2510
  146. 1480 IFSX=X-SANDSY=YTHENGOSUB2570
  147. 1490 K=PEEK(AV-(S+1)):IFK=0ORK=1THENGOTO1560
  148. 1500 IFPEEK(AV-S-H1)AND1THENGOSUB1620:GOTO1520
  149. 1510 GOSUB1740
  150. 1520 IFPEEK(AV-S)AND1THENGOSUB2090:GOTO1540
  151. 1530 GOSUB2210
  152. 1540 S=S+1:IFS>4THEN1610
  153. 1550 GOTO1470
  154. 1560 IFPEEK(AV-S-H1)AND1THENGOSUB1820:GOTO1580
  155. 1570 GOSUB2290
  156. 1580 IFPEEK(AV-S)AND1THENGOSUB1960:GOTO1600
  157. 1590 GOSUB2390
  158. 1600 RETURN
  159. 1610 DN=11:GOSUB2720:PRINTTAB(19)"[205][206][157][157][206][205]":RETURN
  160. 1620 DN=YL(S):GOSUB2720
  161. 1630 IFS=0THENPRINTTAB(XR(S));"[175]"
  162. 1640 IFS>0ANDS<4THENFORI=1TO4-S:PRINTTAB(XR(S)+5-S)"[165]":NEXT
  163. 1650 IFS>0THENPRINTTAB(XR(S))MID$("[175][175][175][175][165]",S)
  164. 1660 IFS=4THENPRINTTAB(XR(S))"[165][165][157][157][165][165]"
  165. 1670 Q$="":IFS>0THENQ$=MID$("[165]",S)
  166. 1680 IFS<4THENFORI=0TON2(S)+1:PRINTTAB(XR(S))"[165]"Q$:NEXT
  167. 1690 IFS>0THENPRINTTAB(XR(S))MID$("[183][183][183][183][165]",S)
  168. 1700 IFS>0ANDS<4THENFORI=1TO4-S:PRINTTAB(XR(S)+5-S)"[165]":NEXT
  169. 1710 IFS=0THENPRINTTAB(XR(S))"[183]"
  170. 1720 PRINT"
  171. 1730 [142]
  172. 1740 DN[178]YL(S):[141]2720
  173. 1750 [139]S[178]0[167][153][163]XR(S))"(null)":[137]1770
  174. 1760 [129]I[178]1[164]5[171]S:[153][163]XR(S)[170]5[171]S[171]I)"(null)":[130]
  175. 1770 DN[178]N2(S)[170]2:[141]2730
  176. 1780 [139]S[178]0[167][153][163]XR(S))"(null)":[137]1800
  177. 1790 [129]I[178]0[164]4[171]S:[153][163]XR(S)[170]I)"(null)":[130]
  178. 1800 [153]"
  179. 1810 RETURN
  180. 1820 J=3-S:IFS=0THENJ=0
  181. 1830 PRINT"";
  182. 1840 IFS>0GOTO1880
  183. 1850 PRINTTAB(20);:PRINT"";:FORI=1TO18:PRINT"[183]";:NEXT:PRINT"[183]"
  184. 1860 DN=N2(0):GOSUB2730
  185. 1870 PRINTTAB(20);:FORI=1TO19:PRINT"[175]";:NEXT:GOTO1940
  186. 1880 DN=YL(S):GOSUB2730
  187. 1890 FORI=1TO5-S:PRINTTAB(J+XR(S)+2)"[165]":NEXT
  188. 1900 PRINTTAB(20);:FORI=19TOJ+XR(S):PRINT"[183]";:NEXT:PRINT"[165]"
  189. 1910 IFS<4THENFORI=1TON2(S):PRINTTAB(J+XR(S)+2)"[165]":NEXT
  190. 1920 PRINTTAB(20);:FORI=19TOJ+XR(S):PRINT"[175]";:NEXT:PRINT"[165]"
  191. 1930 FORI=1TO5-S:PRINTTAB(J+XR(S)+2)"[165]":NEXT
  192. 1940 PRINT"
  193. 1950 [142]
  194. 1960 [153]"";
  195. 1970 [139]S[177]0[137]2010
  196. 1980 [153]"";:[129]I[178]1[164]11[170]XL(0):[153]"USR";:[130]:[153]"USR"
  197. 1990 DN[178]N2(0):[141]2730
  198. 2000 [129]I[178]1[164]12[170]XL(0):[153]"AND";:[130]:[137]1940
  199. 2010 DN[178]YL(S):[141]2730
  200. 2020 [129]I[178]1[164]5[171]S:[153][163]XL(S))"THEN":[130]
  201. 2030 [153][163]XL(S));:[153]"THEN";:[129]I[178]XL(S)[164]17:[153]"USR";:[130]:[153]"USR"
  202. 2040 [139]S[179]4[167][129]I[178]1[164]N2(S):[153][163]XL(S))"THEN":[130]
  203. 2050 [153][163]XL(S));:[153]"THEN";:[129]I[178]XL(S)[164]17:[153]"AND";:[130]:[153]"AND"
  204. 2060 [129]I[178]1[164]5[171]S:[153][163]XL(S))"THEN":[130]
  205. 2070 [153]"
  206. 2080 RETURN
  207. 2090 DN=YL(S):GOSUB2720
  208. 2100 IFS=0THENPRINTTAB(XL(S));"[175]"
  209. 2110 IFS>0ANDS<4THENFORI=1TO4-S:PRINTTAB(XL(S))"[167]":NEXT
  210. 2120 IFS>0THENPRINTTAB(XL(S))LEFT$("[167][175][175][175][175]",6-S)
  211. 2130 IFS=4THENPRINTTAB(XL(S))"[167][167][157][157][167][167]"
  212. 2140 Q$="":IFS>0THENQ$=MID$("[167]",S)
  213. 2150 IFS<4THENFORI=0TON2(S)+1:PRINTTAB(XL(S))"[167]"Q$:NEXT
  214. 2160 IFS>0THENPRINTTAB(XL(S))LEFT$("[167][183][183][183][183]",6-S)
  215. 2170 IFS>0ANDS<4THENFORI=1TO4-S:PRINTTAB(XL(S))"[167]":NEXT
  216. 2180 IFS=0THENPRINTTAB(XL(S))"[183]"
  217. 2190 PRINT"
  218. 2200 [142]
  219. 2210 DN[178]YL(S):[141]2720
  220. 2220 [139]S[178]0[167][153][163]XL(S));"(null)":[137]2240
  221. 2230 [129]I[178]1[164]5[171]S:[153][163]XL(S)[170]I)"(null)":[130]
  222. 2240 DN[178]N2(S)[170]2:[141]2730
  223. 2250 [139]S[178]0[167][153][163]XL(S))"(null)":[137]2270
  224. 2260 [129]I[178]0[164]4[171]S:[153][163]XL(S)[170]5[171]S[171]I)"(null)":[130]
  225. 2270 [153]""
  226. 2280 [142]
  227. 2290 [141]1740
  228. 2300 DN[178]YL(S)[170]5[171]S:[141]2720
  229. 2310 [153][163]20);
  230. 2320 [139]S[179]4[167][129]I[178]1[164]XR(S)[171]21:[153]"USR";:[130]
  231. 2330 [153]"(null)CMD";
  232. 2340 [139]S[179]4[167][129]I[178]1[164]N2(S):[153]"THENCMD";:[130]
  233. 2350 [153]"SQRCMDCMD";
  234. 2360 [139]S[179]4[167][129]I[178]1[164]XR(S)[171]20[171]1:[153]"ANDCMDCMD";:[130]
  235. 2370 [153]"
  236. 2380 RETURN
  237. 2390 IFS=0THENJ=5:GOTO2410
  238. 2400 J=0
  239. 2410 GOSUB2210
  240. 2420 DN=YL(S)+5-S:GOSUB2720
  241. 2430 PRINTTAB(19);
  242. 2440 IFS<4THENFORI=1TO18-XL(S)-5+S+J:PRINT"[183][157][157]";:NEXT
  243. 2450 PRINT"[207][157]";
  244. 2460 IFS<4THENFORI=1TON2(S):PRINT"[165][157]";:NEXT
  245. 2470 PRINT"[204]";
  246. 2480 IFS<4THENFORI=1TO18-XL(S)-5+S+J:PRINT"[175]";:NEXT
  247. 2490 PRINT"
  248. 2500 [142]
  249. 2510 [139]S[178]0[176]S[178]4[167][142]
  250. 2520 DN[178]18:[141]2720
  251. 2530 [139]S[178]3[167][153][163]20);"SYSONONON.STOP
  252. 2540 IFS=2THENPRINTTAB(19);"[145][169][146][169][157][157][166][206][145][165][165][144]"
  253. 2550 IFS=1THENPRINTTAB(18);"[158] [175][175][175][157][157][157][157][206]  [206][165][157][157][157][157][157][166][166][166] [165][157][157][157][157][157][166][166][166][206][144]"
  254. 2560 RETURN
  255. 2570 IFS=0ORS=4THENRETURN
  256. 2580 DN=20:GOSUB2720
  257. 2590 IFS=3THENPRINTTAB(19);"[145][145][145][145][145][162][162][145][157][157][146][162][162]
  258. 2600 [139]S[178]2[167][153][163]16);"ONONONSTEP      (null)
  259. 2610 IFS=1THENPRINTTAB(13);"[169]            [223]
  260. 2620 [139]S[178]1[167][153][163]12);"STEP              (null)
  261. 2630 RETURN
  262. 2640 K=TI:FORI=1TO25:PRINT:PRINT""TAB(15)"DELICIOUS!":FORJ=1TO50:NEXTJ
  263. 2650 PRINT:PRINT""TAB(15)"          ":FORJ=1TO50:NEXTJ,I
  264. 2660 GOSUB890
  265. 2670 PRINT"[145]ANOTHER MAZE? (UP[146] FOR YES DOWN[146] FOR NO)"
  266. 2680 I=PEEK(56320)AND15
  267. 2690 IFI=14THENPRINT"YES":GOTO270
  268. 2700 IFI=13THENPRINT"NO":POKEQK,0:END
  269. 2710 GOTO2680
  270. 2720 PRINT"";
  271. 2730 IFDN>0THENFORZ=1TODN:PRINT"";:NEXT
  272. 2740 RETURN
  273.